package com.liner.homework1.first;

import com.liner.homework1.second.Point;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;

public class ListDemo {
    public static void main(String[] args) {
        // 1. List集合基本方法的练习：get()、set()、重载remove()、重载add()
        List<String> list = new ArrayList<>();
        list.add("bob");
        list.add("tom");
        list.add("alice");
        list.add("jack");
        list.add("lala");
        list.add("rock");
        System.out.println("list集合:" + list);
        System.out.println("获取 list 中下标为 3 的 元素:" + list.get(3));
        System.out.println("修改 list 中下标为 4 的 元素 为 “dingDing”:" + list.set(4, "dingDing"));
        System.out.println("删除 list 中下标为 4 的 元素:" + list.remove(4));
        list.add(1, "jerry");
        System.out.println("为 list 中下标为 1 添加 “jerry“ 元素后的集合为:" + list);

        // 2. List集合获取子集方法的练习：subList()
        List<String> subList = list.subList(0,5);
        System.out.println("获取 list 从 下标 0 到 4的子集:" + subList);

        //   3. 集合排序的练习：对Integer排序、对String排序、对Point排序自定义排序
        List<Integer> integerArrayList = new ArrayList<>();
        integerArrayList.add(412);
        integerArrayList.add(67487);
        integerArrayList.add(77);
        integerArrayList.add(12);
        integerArrayList.add(47);
        integerArrayList.add(67);
        Collections.sort(integerArrayList);
        System.out.println("排序后integerArrayList为: " + integerArrayList);

        List<String> stringArrayList = new ArrayList<>();
        stringArrayList.add("three");
        stringArrayList.add("two");
        stringArrayList.add("one");
        stringArrayList.add("five");
        stringArrayList.add("six");
        stringArrayList.add("six");
        stringArrayList.add("four");
        stringArrayList.add("seven");
        Collections.sort(stringArrayList);
        System.out.println("排序后stringArrayList为: " + stringArrayList);

        List<com.liner.homework1.second.Point> pointArrayList = new ArrayList<>();
        pointArrayList.add(new Point(12,45));
        pointArrayList.add(new Point(98, 8));
        pointArrayList.add(new Point(23, 56));
        pointArrayList.add(new Point(2, 12));
        pointArrayList.add(new Point(12, 90));
        pointArrayList.sort((o1, o2) -> {
            int len1 = o1.getX() * o1.getX() + o1.getY()* o1.getY();
            int len2 = o2.getX() * o2.getX() + o2.getY()* o2.getY();
            return len2 - len1;

        });  //根据距离原点距离降序排列
        System.out.println("自定义排序后的pointArrayList: " + pointArrayList);

        //  4. Set集合及Set去重的练习
        HashSet<String> hashSet = new HashSet<>(stringArrayList);
        System.out.println("将 stringArrayList 集合添加到 hashSet,并完成去重:" + hashSet);


    }


}
